 #define _CRT_SECURE_NO_WARNINGS 1

//#include <iostream>
//#include <vector>
//using namespace std;
//
//int main() {
//
//    int n;
//    while (cin >> n)
//    {
//        vector<long long> v(n + 1);
//        v[1] = 0;
//        v[2] = 1;
//
//        for (int i = 3; i <= n; i++)
//            v[i] = (i - 1) * (v[i - 1] + v[i - 2]);
//
//        cout << v[n] << endl;
//    }
//    return 0;
//}


#include <iostream>
#include <vector>
#include <cmath>
using namespace std;

int main() {

    int n = 0;
    while (cin >> n)
    {
        vector<int> tmp(n);
        for (int i = 0; i < n; i++)
            cin >> tmp[i];

        vector<int> dp(n, 1);
        int ret = 1;
        for (int i = 1; i < n; ++i)
        {
            for (int j = 0; j < i; j++)
            {
                if (tmp[i] > tmp[j])
                    dp[i] = max(dp[i], dp[j] + 1);
            }
            ret = max(ret, dp[i]);
        }
        cout << ret << endl;
    }
    return 0;
}
